#pragma once

#include <GLNew\glew.h>
#include <SFML/Window.hpp>
#include <SFML/OpenGL.hpp>
#include <iostream>
#include <glm\glm.hpp>
#include <glm\gtc\matrix_transform.hpp>
#include <gl\glfw.h>


using namespace glm;

class Mesh
{
public:
	Mesh(void);
	~Mesh(void);

	bool LoadMesh(const char * Filepath);
	void Render();
	void RenderToFrameBuffer();
	void Release();
	GLint GetVertexBuffer();
	GLint GetElementbuffer();
	int GetIndicesSize();

private:

	GLuint vertexbuffer;
	GLuint uvbuffer;
	GLuint normalbuffer;
	GLuint elementbuffer;

	std::vector< glm::vec3 > vertices;
	std::vector< glm::vec2 > uvs;
	std::vector< glm::vec3 > normals; 

	std::vector<vec3> tangents;
	std::vector<vec3> bitangents;

	std::vector<unsigned short> indices;
	std::vector<vec3> indexed_vertices;
	std::vector<vec2> indexed_uvs;
	std::vector<vec3> indexed_normals;
	std::vector<vec3> indexed_tangents;
	std::vector<vec3> indexed_bitangents;

};

